/*
 * Copyright © 2022
 * @Author: zhangxiang
 * @Date: 2022-11-24 11:20:02
 * @LastEditors: zhangxiang
 * @LastEditTime: 2023-07-31 14:11:27
 * @Description:
 *
 */

export default {
  data() {
    return {
      searchKey: '', // 搜索关键词
      loading: false, // 加载
      pageSize: 10, // 页大小
      pageNum: 1, // 页码
      totalCount: 0, // 总数
      list: [] // 列表
    }
  },
  computed: {},
  methods: {
    /**
     * @description: size变化
     * @param {*} size
     * @return {*}
     */
    sizeChange(size) {
      this.pageSize = size
      this.pageNum = 1 // 第一页
      this.getList() // 请求数据
    },
    /**
     * @description: 切换页码
     * @param {*} pageNum
     * @return {*}
     */
    changePage(pageNum) {
      this.pageNum = pageNum
      this.getList() // 请求数据
    },
    /**
     * @description: 重置
     * @return {*}
     */
    resetClick() {
      this.searchKey = ''
      this.pageNum = 1 // 第一页
      this.getList() // 请求数据
    },
    /**
     * @description: 清除关键字
     * @return {*}
     */
    clearClick() {
      this.searchKey = ''
      this.pageNum = 1
      this.getList() // 刷新数据
    },
    /**
     * @description: 查询
     * @return {*}
     */
    queryClick() {
      this.pageNum = 1
      this.getList() // 请求数据
    },
    /**
     * @description: 额外处理成功返回值，供外部使用
     * @param {*} res
     * @return {*}
     */
    extraHandleSuccessResp(res) { },
    /**
     * @description: 统一处理请求和返回值
     * @param {*} caller
     * @param {*} params
     * @return {*}
     */
    handleRequestAndResp(caller, params) {
      caller(params)
        .then((res) => {
          if (res.data) {
            this.totalCount = res.data.totalCount
            this.list = Array.isArray(res.data.data) ? res.data.data : []
          } else {
            // 数据为空处理
            this.totalCount = 0
            this.list = []
          }
          this.extraHandleSuccessResp(res)
        })
        .finally(() => {
          this.loading = false
        })
    },
    /**
     * @description: 初始化数据
     * @return {*}
     */
    initPageData() {
      this.loading = true
      this.pageNum = 1
      this.getList()
    }
  },
  created() {
    this.searchKey = this.$route.query.keyword || ''
    this.initPageData()
  }
}
